package com.itheima.tliasmanagementspringboot.controller;


import com.itheima.tliasmanagementspringboot.annotation.OperateLog;
import com.itheima.tliasmanagementspringboot.pojo.Clazz;
import com.itheima.tliasmanagementspringboot.dtos.PageDto;
import com.itheima.tliasmanagementspringboot.common.R;
import com.itheima.tliasmanagementspringboot.service.ClazzService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;

/**
 * 班级管理
 */
@RestController
@Slf4j//日志输出注解,哪里需要加哪里(类上),lombok提供
public class ClazzController {

    @Autowired
    ClazzService clazzService;

    /**
     * 1.
     * 功能: 班级列表查询
     * @return 统一的返回对象(R)
     */
    @GetMapping("/clazzs/list")
    public R queryAllDept(){
        log.info("查询班级: {}, {}",1, 2 );//一个{}就是一个占位符,写到文件中去
        return R.ok(clazzService.queryAllClazzService());
    }

    /**
     * 功能: 班级列表查询,分页查询
     * @return 统一的返回对象(R)
     */
    @GetMapping("/clazzs")
    public R pageQueryEmp(PageDto pageDto){
        log.info("分页查询班级: {}", pageDto);//一个{}就是一个占位符,写到文件中去
        System.out.println("请求层:" + pageDto);
        return R.ok(clazzService.pageQueryClazzService(pageDto));
    }

    /**
     * 功能: 根据id查询班级信息
     * @return 统一返回对象(R)
     *
     */
    @GetMapping("clazzs/{id}")
    public R queryDeptByCondition(@PathVariable Integer id){
        log.info("根据id查询班级信息: {}", id);
        return R.ok(clazzService.queryClazzByConditionService(id));
    }

    /**
     * 功能: 根据id查删除班级信息
     * @return 统一返回对象(R)
     *
     */
    @OperateLog
    @DeleteMapping("/clazzs/{id}")
    public R deleteDeptById(@PathVariable Integer id){
        log.info("根据id删除班级信息: {}", id);
        clazzService.deleteClazzById(id);
        return R.ok();
    }

    /**
     * 功能: 添加/插入一条班级信息
     * @return 统一返回对象(R)
     *
     */
    @OperateLog
    @PostMapping("/clazzs")
    public R insertDept(@RequestBody Clazz clazz){
        log.info("添加/插入一条班级信息:");
        clazzService.insertClazzService(clazz);
        return R.ok();
    }

    /**
     * 功能:根据id更新班级信息
     * @param clazz :班级id
     * @return 统一返回对象R
     */
    @OperateLog
    @PutMapping("/clazzs")
    public R updateDeptById(@RequestBody Clazz clazz){
        log.info("根据id删除班级信息: {}", clazz);
        clazzService.updateClazzByIdService(clazz);
        return R.ok();
    }

}
